﻿using System;
using System.IO;
using Styx;
using Styx.Helpers;

namespace MIBWarlock
{
    public class MIBSettings : Settings
    {
        public static readonly MIBSettings Instance = new MIBSettings();

        #region DataSource

        public bool UpdateStatus;

        public MIBSettings()
            : base(
                Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                             string.Format(@"Routines/MIBWarlock/MIBWarlock-Settings-{0}.xml",
                             StyxWoW.Me.Name)))
        {
        }

        #endregion

        #region General

        [Setting, DefaultValue(true)]
        public bool AoE { get; set; }

        [Setting, DefaultValue(34)]
        public int AoEKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool AttackOOC { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoAttack { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoMove { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoFace { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoBuff { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoRacial { get; set; }

        [Setting, DefaultValue(true)]
        public bool AutoTarget { get; set; }

        [Setting, DefaultValue(19)] //S
        public int Backward { get; set; }

        [Setting, DefaultValue(20000)]
        public int BurstDelay { get; set; }

        [Setting, DefaultValue(42)]
        public int BurstKey { get; set; }

        [Setting, DefaultValue(60)]
        public int BurstHP { get; set; }

        [Setting, DefaultValue(false)]
        public bool Burst { get; set; }

        [Setting, DefaultValue(40)]
        public int DarkRegenerationPlayerHP { get; set; }

        [Setting, DefaultValue(40)]
        public int DarkRegenerationPetHP { get; set; }

        [Setting, DefaultValue(false)]
        public bool DebugMode { get; set; }

        [Setting, DefaultValue(95)]
        public int DoNotHealAbove { get; set; }

        [Setting, DefaultValue(23)] //W
        public int Forward { get; set; }

        [Setting, DefaultValue(true)]
        public bool HealthStone { get; set; }

        [Setting, DefaultValue(40)]
        public int HealthStoneHP { get; set; }

        [Setting, DefaultValue("")]
        public string LastSavedSpec { get; set; }

        [Setting, DefaultValue("")]
        public string LastSavedMode { get; set; }

        [Setting, DefaultValue(true)]
        public bool LagTolerance { get; set; }

        [Setting, DefaultValue(false)]
        public bool Pause { get; set; }

        [Setting, DefaultValue(33)]
        public int PauseKey { get; set; }

        [Setting, DefaultValue(true)]
        public bool PauseKeyUse { get; set; }

        [Setting, DefaultValue(2000)]
        public int PendingSpellStopWatchDuration { get; set; }

        [Setting, DefaultValue(0)]
        public int ProfBuff { get; set; }

        [Setting, DefaultValue(60)]
        public int ProfBuffHP { get; set; }

        [Setting, DefaultValue(60)]
        public int StartEating { get; set; }

        [Setting, DefaultValue(17)] //Q
        public int StrafleLeft { get; set; }

        [Setting, DefaultValue(5)] //E
        public int StrafleRight { get; set; }

        [Setting, DefaultValue(0)]
        public int Trinket1 { get; set; }

        [Setting, DefaultValue(60)]
        public int Trinket1HP { get; set; }

        [Setting, DefaultValue(0)]
        public int Trinket2 { get; set; }

        [Setting, DefaultValue(60)]
        public int Trinket2HP { get; set; }

        [Setting, DefaultValue(300)]
        public int TrueFacingTimeOut { get; set; }

        [Setting, DefaultValue(4)] //D
        public int TurnLeft { get; set; }

        [Setting, DefaultValue(1)] //A
        public int TurnRight { get; set; }

        [Setting, DefaultValue(true)]
        public bool UseFoodDrink { get; set; }

        #endregion

        #region Group Healing

        [Setting, DefaultValue(true)]
        public bool Group1 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group2 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group3 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group4 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group5 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group6 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group7 { get; set; }

        [Setting, DefaultValue(true)]
        public bool Group8 { get; set; }

        #endregion
    }
}